package com.kdg;

import java.util.Comparator;
import java.util.Objects;
import java.util.function.Predicate;

/**
 * Created by Administrator on 2017/8/24.
 * 函数式接口
 */
public class TestFunction {
    public static void main(String[] args) {
        /**
         * Predicate是一个布尔类型的函数，该函数只有一个输入参数。Predicate接口包含了多种默认方法，用于处理复杂的逻辑动词（and, or，negate）
         */
        Predicate<String> predicate = (o) -> o.length()>0;

        predicate.test("");  //false
        predicate.negate().test(""); //true
        boolean test = predicate.negate().negate().test(""); //false
        System.out.println(test);

        /**
         * Comparator接口在早期的Java版本中非常著名。Java 8 为这个接口添加了不同的默认方法。
         */
        Comparator<Person> com = (Person p1, Person p2) -> p1.firstname.compareTo(p2.firstname);

        Person person = new Person("aq","qq");
        Person person2 = new Person("qa","aa");

        int compare = com.compare(person, person2);
        int compare1 = com.reversed().compare(person, person2);
        System.out.println(compare+"-"+compare1);

    }
}
